home *** CD-ROM | disk | FTP | other *** search
- #ifndef XPKMASTER_FAULT_C
- #define XPKMASTER_FAULT_C
-
- /* Routinesheader
-
- Name: fault.c
- Main: xpkmaster
- Versionstring: $VER: fault.c 1.4 (02.04.97)
- Author: SDI
- Distribution: PD
- Description: Error message generators
-
- 1.0 05.10.96 : first real version
- 1.1 27.12.96 : added parts of Fault functions
- 1.2 28.12.96 : finished the two Fault functions
- 1.3 31.03.97 : added new error (XPKERR_UNKNOWN);
- 1.4 02.04.97 : renamed to fault.c, removed geterror
- */
-
- #include <pragma/exec_lib.h>
- #include <pragma/dos_lib.h>
- #include "xpkmaster.h"
- #include "xpk_strings.h"
-
- #ifdef __cplusplus
- extern "C"
- #endif
-
- LONG __asm LIBXpkPrintFault(register __d0 LONG code,
- register __a0 STRPTR header)
- {
- LONG error;
- STRPTR a[2];
-
- if(code > 0 || code < MINERROR)
- code = XPKERR_UNKNOWN;
-
- a[1] = XpkErrs[-code];
-
- if((a[0] = header))
- error = VPrintf("%s: %s\n", a);
- else
- error = VPrintf("%s\n", &a[1]);
-
- if(error == -1)
- return 0; /* error */
- else
- return -1; /* ok */
- }
-
- #ifdef __cplusplus
- extern "C"
- #endif
-
- ULONG __asm LIBXpkFault(register __d0 LONG code, register __a0 STRPTR header,
- register __a1 STRPTR buffer, register __d1 ULONG size)
- {
- STRPTR string;
- ULONG hsize = 0, ssize;
-
- if(size <= 1 || !buffer)
- return 0;
-
- if(code > 0 || code < MINERROR)
- code = XPKERR_UNKNOWN;
-
- string = XpkErrs[-code];
-
- if((ssize = strlen(string)) >= size)
- ssize = size - 1;
- size -= ssize + 1;
-
- if(header && (hsize = strlen(header)) + 2 <= size)
- {
- CopyMem(header, buffer, hsize);
- buffer[hsize] = ':';
- buffer[hsize+1] = ' ';
- buffer += hsize + 2;
- }
-
- CopyMem(string, buffer, ssize);
- buffer[ssize] = 0;
-
- return (ssize + hsize);
- }
-
- #endif /* XPKMASTER_FAULT_C */
-